8352. Такси

 

В час пик на остановку одновременно подъехали три маршрутных такси, следующие по одному маршруту, в которые тут же набились пассажиры. Водители заметили, что количество людей в разных маршрутках разное, и решили пересадить часть пассажиров так, чтобы в каждой маршрутке было одинаковое число пассажиров. Определите, какое наименьшее количество пассажиров придется пересадить для этого.

 

Вход. Три натуральных числа, не превосходящих 100 – количество пассажиров в первой, второй и третьей маршрутках соответственно.

 

Выход. Выведите одно число – наименьшее количество пассажиров, которое требуется пересадить. Если это выполнить невозможно, то выведите IMPOSSIBLE.

 

Пример входа

Пример выхода

1 2 3

1

 

 

РЕШЕНИЕ

математика

 

Анализ алгоритма

Пусть a, b, c – количество людей в первой, второй и третьей маршрутках. Для того чтобы после пересадки количество людей в маршрутках было одинаковое, необходимо чтобы сумма a + b + c делилась на 3.

Пусть d = (a + b + c) / 3 – количество людей, которое должно находиться в каждой маршрутке после пересадки. Тогда из каждой маршрутки следует пересадить в какую-то другую столько людей, чтобы в ней осталось ровно d. Это возможно только если в маршрутке изначально находится больше d пассажиров. Например, из первой маршрутки следует пересадить ad людей, если только a > d. Со второй маршрутки следует пересадить bd людей (если b > d). Из третьей маршрутки следует пересадить cd людей (если c > d).

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d %d",&a,&b,&c);

 

Если общая сумма людей не делится на 3, то выводим IMPOSSIBLE.

 

if ((a + b + c) % 3 != 0)

  puts("IMPOSSIBLE");

else

{

  res = 0;

 

Вычисляем количество d людей в маршрутках после пересадки.

 

  d = (a + b + c) / 3;

 

В переменной res считаем количество пересаживаемых людей.

 

  if (a > d) res += a - d;

  if (b > d) res += b - d;

  if (c > d) res += c - d;

 

Выводим ответ.

 

  printf("%d\n",res);

}

 

Python реализация

Читаем входные данные.

 

a, b, c = map(int, input().split())

 

Если общая сумма людей не делится на 3, то выводим IMPOSSIBLE.

 

if (a + b + c) % 3 != 0:

  print("IMPOSSIBLE")

else:

  res = 0

 

Вычисляем количество d людей в маршрутках после пересадки.

 

  d = (a + b + c) // 3

 

В переменной res считаем количество пересаживаемых людей.

 

  if a > d: res += a – d

  if b > d: res += b – d

  if c > d: res += c – d

 

Выводим ответ.

 

  print(res)